package com.example.studentmanager.mapper;

import com.example.studentmanager.model.Course;
import com.example.studentmanager.model.StuCourse;
import com.example.studentmanager.model.vo.CourseVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.sql.SQLException;
import java.util.List;


@Component
@Mapper
public interface CourseMapper {
    /**
     * 将课程对象添加到数据表course中
     *
     * @param c 课程对象
     * @return 添加成功返回1，添加失败返回0
     * @throws SQLException
     */
    int insertCourse(Course c) throws SQLException;

    void insertStuCourse(@Param("sid") int sid,@Param("cid") int cid) throws SQLException;

    /**
     * 根据课程的课程号，删除表course中对应的记录
     *
     *
     * @return 删除成功返回1，没有删除返回0
     * @throws SQLException
     */
    int deleteCourse(@Param("courseid") int courseid) throws SQLException;

    /**
     * 用course对象更新表course中对应的记录
     *
     * @param course 课程对象
     * @return 更新成功返回1，没有更新返回0
     * @throws SQLException
     */
    int updateStatus(Course course) throws SQLException;

    /**
     * 查找course表中含有特定teacherId的所有课程记录，按照学期倒排序
     *
     * @param teacherId 教师ID
     * @return 课程记录选择数组，每一项：name=课程名，id=学期+课程编号，
     *     课程名可能重复，但id不重复
     */
    //List<SelectItem> searchByTeacherId(String teacherId) throws SQLException;

    /**
     * 根据给定的课程号、课程名等进行模糊查询所有符合条件的课程
     *
     * @return 返回所有符合查询条件的课程，没有找到则返回长度为0的空列表
     * @throws SQLException
     */
    //List<CourseEx> search(String id, String name, String teacherId,
                        //  String teacherName, String term) throws SQLException;

    /**
     * 获取所有课程
     *
     * @return 返回所有课程，没有找到则返回长度为0的空列表
     * @throws SQLException
     */
   // List<CourseEx> searchAll() throws SQLException;

    /**
     * 根据课程号，查询课程
     *
     * @param courseId 课程号
     * @return 找到则返回1个课程对象，没找到返回null
     * @throws SQLException
     */
    Course selectCourse(String courseId) throws SQLException;

    void deleteStuCourse(@Param("sid") int sid,@Param("cid") int cid);

    int selectCourseNum(Course course);

    Integer counts(@Param("col") String searchCol, @Param("val") String searchValue);
    List<CourseVo> selectAllCourse(@Param("start") Integer start, @Param("rows") Integer rows, @Param("col") String searchCol, @Param("val") String searchValue);

}
